Hopp til hovedinnhold

Rsync tips og beste praksis

Kapittel 11

Rsync er et kraftig verktøy, men for å bruke det trygt og effektivt bør du kjenne til noen praktiske erfaringer og begrensninger. Dette kapittelet samler nyttige anbefalinger og observasjoner som gjør store og gjentatte Rsync-jobber mer pålitelige.


Kjør store jobber i tmux

Når du starter store Rsync-jobber manuelt, bør du kjøre dem i tmux eller screen. Da fortsetter overføringen selv om du mister SSH-tilkoblingen eller terminalen lukkes.

Eksempel:

tmux
rsync -avhP /source /backup

Koble fra tmux med Ctrl + B etterfulgt av D. Koble til igjen med tmux attach.


Metadata og ulike filsystemer

Når du overfører mellom ulike filsystemer (f.eks. ext4 → exFAT eller Linux → Windows/NTFS), kan ikke alle metadata bevares. Eierskap, rettigheter, tidsstempler og spesialfiler håndteres forskjellig.

Hvis du får feil om rettigheter, bruk for eksempel:

rsync -avhP --no-perms /source /mnt/usbdrive

Dette kopierer filer uten å forsøke å skrive POSIX-rettigheter.


Se alltid etter feilmeldinger

Rsync fortsetter normalt selv om enkelte filer feiler underveis. Derfor bør du kontrollere logg eller output etter kjøring.

Tips:

  • --log-file=fil Lagre alt som logg
  • --verbose Vis mer detaljer
  • --dry-run Test uten å endre noe

Komprimerte eller krypterte filer

Komprimerte og krypterte filer endrer seg kraftig selv ved små innholdsendringer. Da må Rsync ofte sende hele filen på nytt, fordi “delta-transfer” ikke får gjenbrukt eksisterende blokker.

Vurder å:

  • bruke inkrementelle arkiver (tar --listed-incremental)
  • komprimere etter overføring
  • kun komprimere eldre backuper

Omdøpte mapper og filer

Rsync har ikke ekte “rename-deteksjon”. Når en mappe får nytt navn på kilden, oppfører Rsync seg slik:

  1. Uten --delete Rsync ser den nye mappen som ny, og lar den gamle stå igjen på destinasjonen. Resultatet er duplisering – begge mappene eksisterer etter kjøring.

  2. Med --delete Rsync oppdager at den gamle mappen mangler på kilden og sletter den på destinasjonen etter overføringen. Den nye mappen kopieres deretter som vanlig. Dette gir riktig sluttresultat, men filene sendes på nytt fordi Rsync ikke forstår at de er “flyttet”.

  3. Ingen ren “flytt-deteksjon” Rsync sletter og kopierer på nytt i stedet for å flytte. Dette er trygt, men kan være tregt ved store datasett.

  4. Delvis optimalisering --fuzzy Forsøker å gjenbruke lignende filer for å redusere datamengde (fungerer hovedsakelig på filer, ikke mapper). --link-dest Kan brukes ved snapshot-backuper slik at identiske filer hardlinkes i stedet for å kopieres på nytt.

Praktisk tips: Hvis du vet at en mappe kun har fått nytt navn, kan du manuelt omdøpe den på destinasjonen før du kjører rsync. Da slipper Rsync å overføre innholdet igjen.


Ting rsync ikke gjør

  • Rsync utfører ikke toveis synkronisering eller “change reconciliation”. Kilden er alltid “fasit”, og endringer på destinasjonen overskrives uten varsling. Vil du ha toveis synkronisering, bruk Unison eller Syncthing.

  • Rsync utfører ikke deduplisering. Filer med samme innhold lagres flere ganger med forskjellig navn. For deduplisering bruk fdupes, rdfind eller filssystem som ZFS/Btrfs med dedup-funksjon.


Andre nyttige tips

  • Kjør med lav prioritet om systemet skal brukes samtidig:

    nice -n 10 rsync -avhP /source /backup
  • Komprimer overføringen på trege linjer:

    rsync -avzhP user@server:/data ./localdata
  • Test alltid med --dry-run før du bruker --delete. Det finnes ingen “undo” i Rsync.


Høydepunkter – rsync tips

  • Kjør store jobber i tmux for å unngå avbrudd
  • Sjekk metadata ved ulike filsystemer
  • Loggfør og les feilmeldinger
  • Unngå komprimerte filer hvis du vil utnytte delta-overføring
  • Rsync er enveis, ikke toveis
  • Rsync oppdager ikke flyttede mapper → bruk --delete for å fjerne gamle mapper → bruk --fuzzy eller --link-dest for å redusere ny kopiering
  • Rsync har ingen deduplisering
  • Kjør test (--dry-run) før store operasjoner
Robert Kristoffersen
Fullstack-utvikler • Webno